package com.atwisdom.star.auth.business;

import com.atwisdom.star.auth.pojo.Privilege;
import com.atwisdom.star.common.vo.ActionData;
import com.atwisdom.star.common.vo.PageInfo;
import com.atwisdom.star.common.vo.ResultInfo;
import com.atwisdom.star.exception.pojo.BusinessException;

import java.util.List;

public interface PrivilegeBslService {
    /**
     * 添加
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<Privilege> add(ActionData<Privilege> actionData) throws BusinessException;

    /**
     * 批量添加
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<List<Privilege>> batchAdd(ActionData<Privilege> actionData)  throws BusinessException;

    /**
     * 更新
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<Privilege> update(ActionData<Privilege> actionData) throws BusinessException;
    /**
     * 批量更新
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<List<Privilege>> batchUpdate(ActionData<Privilege> actionData)  throws BusinessException;

    /**
     * 删除
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<Integer> delete(ActionData<Privilege> actionData) throws BusinessException;

    /**
     * 批量删除
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<Integer> batchDelete(ActionData<Privilege> actionData) throws BusinessException;
    /**
     * 根据ID删除
     *
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<Integer> deleteById(ActionData<Privilege> actionData) throws BusinessException;
    /**
     * 删除
     *
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<Integer> deleteByIds(ActionData<Privilege> actionData) throws BusinessException;

    /**
     * 先删除再添加
     *
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<?> firstDeleteAndAdd(ActionData<Privilege> actionData) throws BusinessException;

    /**
     * 简单查询
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<List<Privilege>> query(ActionData<Privilege> actionData) throws BusinessException;

    /**
     * 根据id数组进行简单查询
     *
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<List<Privilege>> queryByIds(ActionData<Privilege> actionData) throws BusinessException;


    /**
     * 分页查询
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<PageInfo> queryByPage(ActionData<Privilege> actionData) throws BusinessException;

    /**
     * 分页复杂查询
     * @param actionData  接收参数
     * @return 返回统一结果类型(ResultInfo )
     */
    ResultInfo<PageInfo> complexQuery(ActionData<Privilege> actionData) throws BusinessException;
}
